Skip to content

feat: Cytiva Biacore Insight - Support multiple processed data documents (enables Kinetics + Affinity model data)#1175

Closed
james-leinas wants to merge 9 commits into
mainfrom
jleinas-biacore-insight-kinetics-affinity
Closed

feat: Cytiva Biacore Insight - Support multiple processed data documents (enables Kinetics + Affinity model data)#1175
james-leinas wants to merge 9 commits into
mainfrom
jleinas-biacore-insight-kinetics-affinity

Conversation

@james-leinas

Copy link
Copy Markdown
Collaborator

Changes include:

  • Two processed data documents per measurement when both models exist:
    1. 1:1 binding kinetics model with kon, koff, KD, Rmax
    2. Steady state affinity model with KD, Rmax, offset

Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com

james-leinas and others added 6 commits April 10, 2026 09:55
Allow measurements to have multiple processed data documents when both kinetics and affinity models are present. This enables proper representation of files where both 1:1 binding kinetics and steady state affinity analyses are performed on the same data.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated Cytiva Biacore T200 Control and T200 Evaluation parsers to work with
the new binding_affinity_analyzer schema that uses list[ProcessedData] instead
of individual processed data fields on Measurement.

Changes to T200 Control:
- Added ProcessedData import
- Wrap report points in a ProcessedData object (required by new schema where
  report points are nested inside processed data documents)
- Create empty ProcessedData with model_name="N/A" when report points exist

Changes to T200 Evaluation:
- Added ProcessedData import
- Extract kinetic parameters (kon, koff, kd, rmax) into variables
- Create ProcessedData object with kinetic parameters and custom info
- Pass processed_data=[ProcessedData(...)] instead of individual fields

This maintains backward compatibility while supporting the enhanced schema
that allows multiple analysis models per measurement (e.g., both kinetics
and affinity models in Cytiva Biacore Insight).

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated EvaluationKinetics.get_data() to return list[KineticsData] instead of
a single KineticsData object. This aligns with the internal storage (_data)
which already stores lists of KineticsData (to support multiple analysis models
like both kinetics and affinity in the same measurement).

This fixes a type mismatch where get_data was returning the wrong type, and
enables proper support for measurements with multiple analysis models.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ture

Updated test expected outputs to reflect the new schema structure where
kinetic analysis data is wrapped in ProcessedData objects within processed
data aggregate documents.

Changes:
- Added processed data aggregate document containing ProcessedData with:
  - model_name extracted from kinetic data
  - Kinetic parameters (kon, koff, kd, rmax)
  - Custom info (kinetics chi squared, ka/kd/Rmax errors)

All T200 Evaluation tests passing (1/1).

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…calculated concentration

Updated test expected outputs to include changes from main branch:
- Dynamic extraction of Analyte 1-N columns (from PR #1171)
- Calculated concentration support (from PR #1172)
- Support for multiple ProcessedData documents (kinetics + affinity models)

Changes include:
- Multiple Analyte fields (Analyte 2, Analyte 3) in device control and sample custom info
- Multiple Regeneration fields (Regeneration 2, Regeneration 3)
- Two processed data documents per measurement when both models exist:
  1. 1:1 binding kinetics model with kon, koff, KD, Rmax
  2. Steady state affinity model with KD, Rmax, offset
- Test data masking updates (sensor chip ID, lot number, solution names)

All Insight tests passing (4/4).

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@james-leinas
james-leinas requested review from a team and slopez-b as code owners April 10, 2026 18:37
ajcariaga16
ajcariaga16 previously approved these changes Apr 13, 2026
james-leinas and others added 2 commits April 16, 2026 17:23
…ht-kinetics-affinity

# Conflicts:
#	src/allotropy/allotrope/schema_mappers/adm/binding_affinity_analyzer/benchling/_2024/_12/binding_affinity_analyzer.py
#	src/allotropy/parsers/cytiva_biacore_insight/cytiva_biacore_insight_data_creator.py
The RefResolver's store parameter has an incorrect type hint that doesn't match the actual expected usage. The store needs to be a dict of schema objects, not strings.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@nathan-stender

Copy link
Copy Markdown
Collaborator

Closing — this work was fully covered by #1183, which is a strict superset (includes the same shared mapper/insight/t200-control changes plus additional T200 Evaluation decoder and KD error extraction that this PR lacked).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants